<?php

include('Evenement.php');
include('Anniversaire.php');

class Date {
	//En timestamp le début du mois
  private $date;

  /**
   * Cette fonction est le constructeur
   * @param timestamp $_date Si une date est donnée, ce sera la date, sinon ce sera la date du jour, c'est un timestamp
   */
  function __construct($_date = null) {
  	if($_date != null)
  		$this->date = $_date;
  	else
  		$this->date = mktime(0,0,0,date('m'), date('d'), date('y'));
  }
  
  /**
   * Cette opération permet de visualiser la date et bien sur les évènements qui ont lieu ce jour là
   * @param boolean $boucle : permet de déterminer si cette date s'affiche dans une boucle 
   * (typiquement visualisation d'un mois) ou non (typiquement visualisation d'une journée précise)
   */
  public function voir_date($boucle = false, $nested = null)
  {
  	global $db, $template, $user;
  	
  	//Est ce que l'on doit afficher cet évènement parce qu'on est dans une boucle ?
  	if($boucle == true) {
  		$template->assign_block_vars('jour', array(
  			'JOUR' 	=> date('d', $this->date),
  			'MOIS' 	=> date('m', $this->date),
  			'ANNEE' => date('Y', $this->date)
  		));
  	} else {
  		$template->assign_vars(array(
  			'JOUR' 	=> date('d', $this->date),
  			'MOIS' 	=> date('m', $this->date),
  			'ANNEE' => date('Y', $this->date)
  		));
  	}
  	
  	//Recherchons tous les évènements qui ont lieu ce jour ci : 
  	$select = "SELECT 
  					id_evenement
  				FROM 
  					" . CALENDRIER_EVENEMENT_TABLE . "
  				WHERE
  					NOT(
  							date_fin  <= ".(int) (mktime(0,0,0,date('m', $this->date), date('d', $this->date)+1, date('y', $this->date))) ."
  						OR
  							date_debut >= ".(int) mktime(0,0,0,date('m', $this->date), date('d', $this->date)+1, date('y', $this->date))."
  						)
					OR 
  						(
								recurrent = 1
							AND
								recJour = " .(int) (date('d', $this->date)) ."
							AND
								recMois = " .(int) date('m', $this->date)."
							AND
								date_debut < ".(int) mktime(0,0,0,date('m', $this->date), date('d', $this->date)+1, date('y', $this->date))."
						)
  				ORDER BY
  					theme";
  	$result = $db->sql_query($select);
  	
  	//Ok on va chercher l'objet pour chaque évènement et l'afficher :
  	while($event = $db->sql_fetchrow($result)) {
  		$tmp_event = new Evenement($event['id_evenement']);
  		
  		//Nested boucle, si on est déjà dans une boucle :
  		if($boucle) {
  			if($nested != null)
  				$arg = $nested.'.jour';
  			else
  				$arg = 'jour';
  		}
  		else {
  			if($nested != null)
  				$arg = $nested;
  			else
  				$arg = null;
  		}
  		
  		$tmp_event->voir_presentation(true, $arg, $this->date);
  	}
  	$db->sql_freeresult($result);
  	
  	//Et maintenant affichons les anniversaires :
  	$now = getdate((int) $this->date);

	$anniv = "SELECT
				user_id
			FROM
				".USERS_TABLE."
			WHERE
					(user_birthday  LIKE '" . $db->sql_escape(sprintf('%2d-%2d-', $now['mday'], $now['mon'])) . "%'
				AND
					(
							(
									user_birthday NOT LIKE '%-   0'
								AND
									CAST(SUBSTRING(user_birthday, -4) AS UNSIGNED) <= " . (int) date('Y', $this->date) . "
							)
						OR
							". (int) date('Y', $this->date) . " >= 2004
					))";
	if(request_var('conception', '', true) == 'displayed') {
		$conceptionDate = getdate(mktime(0,0,0,date('m', $this->date)+8, date('d', $this->date), date('y', $this->date)));
		$anniv .= "OR
							(
									user_birthday NOT LIKE '%-   0'
								AND
									user_birthday LIKE '" . $db->sql_escape(sprintf('%2d-%2d-%4d', $conceptionDate['mday'], $conceptionDate['mon'], $conceptionDate['year'])) . "'
							)";
	}
	
  	$result = $db->sql_query($anniv);
  	
  	while($anniv = $db->sql_fetchrow($result)) {
  		$tmp_anniv = new Anniversaire($anniv['user_id']);
  		$tmp_anniv->voirAnniversaire(true, ($boucle) ? 'jour' : null);
  	}
  	$db->sql_freeresult($result);
  }

}
?>
